package main

import (
	"fmt"
)

// ==========字符类型==========
// 1、Go没有专门的字符类型, 如果要存储单个字符, 可以使用byte保存
// 2、传统的字符串是由字符组成的, 而Go的字符串不同, 它是由字节组成.
// 3、Go中字符的本质是一个整数, 直接输出时, 是该字符对应的UTF-8编码的码值
// 4、Go语言的字符使用UTF-8编码, 英文1个字节, 汉字3个字节
// 5、字符类型可以进行运算, 相当于一个整数

func main() {
	var ch1 byte = 'a'
	var ch2 byte = '0'
	// 直接输出byte值, 就是输出字符对应的码值
	fmt.Println(ch1, ch2) // 97, 48
	// 如果要输出对应字符, 需用格式化输出
	fmt.Printf("%c %c\n", ch1, ch2) // a 0

	// 错误: var ch3 byte = '北', '北'所对应的码值21271超过byte范围
	// 正确: 可用int32或者rune接收
	var ch3 = '北' // 默认使用int32来接收码值大的字符
	var ch4 rune = '北'
	fmt.Printf("%c %T\n", ch3, ch3) // 北 int32
	fmt.Printf("%c %T\n", ch4, ch4) // 北 int32
}
